package com.pai4j.zwiki.domain.entity;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import java.time.LocalDateTime;

/**
 * 详细分析报告实体
 * 存储深度代码阅读的完整分析报告
 *
 * @author pai4j
 * @since 2025-10-12
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "pai4j_detailed_analysis_report", indexes = {
        @Index(name = "idx_task_id", columnList = "taskId")
})
public class DetailedAnalysisReportEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 关联的分析任务ID
     */
    @Column(nullable = false, length = 64)
    private String taskId;

    /**
     * 项目概览（JSON格式）
     */
    @Column(columnDefinition = "LONGTEXT")
    private String projectOverview;

    /**
     * 核心模块分析（JSON格式）
     */
    @Column(columnDefinition = "LONGTEXT")
    private String coreModulesAnalysis;

    /**
     * 依赖关系分析（JSON格式）
     */
    @Column(columnDefinition = "LONGTEXT")
    private String dependencyAnalysis;

    /**
     * 设计模式识别（JSON格式）
     */
    @Column(columnDefinition = "TEXT")
    private String designPatterns;

    /**
     * 代码质量分析（JSON格式）
     */
    @Column(columnDefinition = "TEXT")
    private String qualityAnalysis;

    /**
     * 业务流程分析（JSON格式）
     */
    @Column(columnDefinition = "LONGTEXT")
    private String businessFlows;

    /**
     * 技术栈分析（JSON格式）
     */
    @Column(columnDefinition = "TEXT")
    private String techStack;

    /**
     * 综合分析报告（Markdown格式）
     */
    @Column(columnDefinition = "LONGTEXT")
    private String comprehensiveReport;

    /**
     * 详细类图路径
     */
    @Column(length = 512)
    private String detailedClassDiagramPath;

    /**
     * 包依赖图路径
     */
    @Column(length = 512)
    private String packageDependencyPath;

    /**
     * 调用链图路径
     */
    @Column(length = 512)
    private String callChainPath;

    /**
     * 分层架构图路径
     */
    @Column(length = 512)
    private String layerArchitecturePath;

    /**
     * 模块关系图路径
     */
    @Column(length = 512)
    private String moduleRelationPath;

    /**
     * 依赖热力图数据（JSON格式）
     */
    @Column(columnDefinition = "LONGTEXT")
    private String dependencyHeatmapData;

    /**
     * 🆕 深度阅读报告（JSON格式）- Zread风格的逐文件深度阅读
     */
    @Column(columnDefinition = "LONGTEXT")
    private String deepReadingReport;

    /**
     * 创建时间
     */
    @CreationTimestamp
    @Column(nullable = false, updatable = false)
    private LocalDateTime createdAt;
}

